#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//typedef struct ListNode ListNode;
//ListNode* BuyNode(int x) {
//    ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
//    newnode->val = x;
//    newnode->next = NULL;
//    return newnode;
//}
//
//ListNode* creatList(int n) {
//    ListNode* phead = BuyNode(1);
//    ListNode* pcur = phead;
//    for (int i = 2; i <= n; i++) {
//        pcur->next = BuyNode(i);
//        pcur = pcur->next;
//    }
//    pcur->next = phead;
//    return pcur;
//}
//int ysf(int n, int m) {
//    ListNode* prev = creatList(n);
//    ListNode* pcur = prev->next;
//    int count = 1;
//    while (pcur != pcur->next) {
//        if (count == m) {
//            prev->next = pcur->next;
//            free(pcur);
//            pcur = prev->next;
//            count = 1;
//        }
//        else {
//            prev = pcur;
//            pcur = pcur->next;
//            count++;
//        }
//    }
//    return prev->val;
//}


#include <stdio.h>

int main()
{
	int count = 0;
	int x = -1;
	while (x)
	{
		count++;
		x = x & (x - 1);
	}
	printf("%d", count);
	return 0;
}